Conventional software systems often utilize a priority queue of entities sorted by some set of comparison criteria. The entities may represent tasks that a software system must perform or data that a software system must process. The priority queue is utilized to order those tasks. The entity at the top of the priority queue is the most critical entity. This entity represents the task that the software system should perform next. A software system utilizing the priority queue removes the most critical entity from the priority queue and executes tasks appropriate to that entity. The software system then resorts the priority queue listing the remaining entities in order of importance. The most critical entity again occupies the top spot of the priority queue.
A variety of sorting mechanisms are utilized in conventional software systems to sort entities in the priority queue. Two such sorting mechanisms are referred to as a quick sort and a heap sort. These conventional sorts rank all of the entities of the priority queue in order from the most to the least critical. The sorting criteria generally depends on fixed characteristics of the entities defined as appropriate for the tasks represented by the entities. The fixed characteristics might be such things as a product number, a due date, a quantity, manufacturing costs, and profit margin with respect to a priority queue of entities representing orders for goods produced by a manufacturing plant. Sorting criteria can include nonfixed preferences that change during the time in which the software system processes the priority queue and performs tasks. For example, a software system may prefer entities of a second type for a certain period of time after processing an entity of a first type.
Resorting the priority queue after each critical entity is removed is expensive and time consuming. This is especially true with respect to priority queues that utilize nonfixed preferences in the sorting criteria.
An alternative method of ordering entities is a lattice structure rather than a sorted queue. Some software systems build a lattice placing some entities in order with respect to one another but not sorting all entities. These software systems can perform a general lattice vertex removal that determines lattice heads after the removal of a lattice entity. However, the lattice of these systems does not provide an indication of the most critical entity.